﻿#ifndef WRWAVEPLAYTHREAD
#define WRWAVEPLAYTHREAD

#include <QThread>
#include <QAtomicInt>

//表示波形播放线程。
class WRWavePlayThread : public QThread
{
    Q_OBJECT

private:
    //引用计数。
    QAtomicInt m_refCnt;

    Q_DISABLE_COPY(WRWavePlayThread)

    //清理当前对象所占用的相关资源。
    ~WRWavePlayThread(void)
    {
       exit();
    }

public:
    //初始化线程对象。
    WRWavePlayThread(void)
        : m_refCnt(1)
    {
        start();
    }

    //添加引用。
    inline void addRef(void)
    {
        m_refCnt.ref();
    }
    //释放引用计数，如果引用计数为0，则释放当前对象所占用的相关资源，并返回True。
    inline bool release(void)
    {
        if (!m_refCnt.deref())
        {
            delete this;
            return true;
        }
        return false;
    }
};

#endif // WRWAVEPLAYTHREAD
